package com.sc.nft.dao;

import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.sc.nft.entity.DaoPledgeRewardPeriods;
import com.sc.nft.mapper.DaoPledgeRewardPeriodsMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Objects;

/**
 * dao质押活动奖励期数表(sc_dao_pledge_reward_periods)数据DAO
 *
 * @author jinpinhai
 * @description Generator
 * @since 2024-11-26 17:14:03
 */
@Slf4j
@Repository
public class DaoPledgeRewardPeriodsDao extends ServiceImpl<DaoPledgeRewardPeriodsMapper, DaoPledgeRewardPeriods> {

    public IPage<DaoPledgeRewardPeriods> page(Page page, Long daoId, List<Long> pledgeIdList, Long userId, Integer periods) {
        LambdaQueryWrapper<DaoPledgeRewardPeriods> wrapper = Wrappers.lambdaQuery();
        wrapper.eq(Objects.nonNull(daoId), DaoPledgeRewardPeriods::getDaoId, daoId);
        wrapper.in(CollectionUtil.isNotEmpty(pledgeIdList), DaoPledgeRewardPeriods::getPledgeId, pledgeIdList);
        wrapper.eq(Objects.nonNull(userId), DaoPledgeRewardPeriods::getUserId, userId);
        wrapper.eq(Objects.nonNull(periods), DaoPledgeRewardPeriods::getPeriods, periods);
        wrapper.orderByDesc(DaoPledgeRewardPeriods::getGrantTime);
        return page(page, wrapper);
    }


    /**
     * 获取用户奖励期数
     * @return DaoPledgeRewardPeriods
     */
    public List<DaoPledgeRewardPeriods> listByUserPeriodsId(Long userPeriodsId) {
        LambdaQueryWrapper<DaoPledgeRewardPeriods> wrapper = Wrappers.lambdaQuery();
        wrapper.eq(DaoPledgeRewardPeriods::getUserPeriodsId, userPeriodsId);
        wrapper.orderByAsc(DaoPledgeRewardPeriods::getPeriods);
        return list(wrapper);
    }

}